本篇文章同步發布於 Python pandas 如何處理含有無效日期或缺失值的日期欄位?【Python 處理 Excel #7】
處理含有日期欄位的數據時,經常會遇到缺失或無效的數據。這篇文章介紹當在 pandas 中轉換日期時出現異常可以如何處理。
從 Excel、CSV 或其他數據來源讀取數據到 pandas 的 DataFrame 時,日期常以字串形式存在。此時可以使用 pandas 的 to_datetime
函數將這些字串轉換為 pandas 的日期時間類型 (Timestamp),以便進行日期操作和計算。以下是 to_datetime
函數的用法舉例:
import pandas as pd
# 字串列表
date_strings = ['2024-01-01', '2024-02-01', '2024-03-01']
# 將字串轉換為日期類型
dates = pd.to_datetime(date_strings)
print(dates)
pandas 的 to_datetime
函數中的 errors
參數允許我們在轉換日期時遇到異常時進行不同處理,errors
參數有三種設定:
NaT
(Not a Time)個人最常使用 errors='coerce'
處理日期欄位的缺失值。以下是轉換 ship_date
這個日期欄位的例子:
import pandas as pd
# 讀取 Excel 檔案
df = pd.read_excel('example.xlsx')
# 將 'ship_date' 欄位轉換為日期類型,並使用 errors='coerce' 參數處理無效值
df['ship_date'] = pd.to_datetime(df['ship_date'], errors='coerce')
# 顯示前五列數據
print(df.head())
在使用 errors='coerce'
之前,如果日期欄位有無效值或空白值,to_datetime
會拋出錯誤。使用 errors='coerce'
之後,這些無效值將被轉換為 NaT
,以便繼續進行後續的數據處理。
假設現在 df
中的原始數據如下:
order_id | ship_date |
---|---|
10000 | |
10001 | 2024-7-14 |
10002 | invalid |
10003 | 2024-7-31 |
df['ship_date'] = pd.to_datetime(df['ship_date'])
此段程式碼會拋出錯誤,因為第一列是空白值,第三列是無效日期。
df['ship_date'] = pd.to_datetime(df['ship_date'], errors='coerce')
order_id | ship_date |
---|---|
10000 | NaT |
10001 | 2024-7-14 |
10002 | NaT |
10003 | 2024-7-31 |
無效的日期值被轉換為 NaT
,避免拋出錯誤,能直接接續處理。
這篇文章介紹在 Python pandas 中如何處理缺失的日期數據。
errors
參數能處理無效或缺失的日期數據。本篇文章同步發布於 Python pandas 如何處理含有無效日期或缺失值的日期欄位?【Python 處理 Excel #7】